package cn.avalon._01_sync;

import org.apache.rocketmq.client.exception.MQClientException;
import org.apache.rocketmq.client.producer.DefaultMQProducer;
import org.apache.rocketmq.client.producer.SendResult;
import org.apache.rocketmq.common.message.Message;

import java.nio.charset.StandardCharsets;

/**
 * @description: 同步消息生产者
 * @author: Avalon
 * @date: 2022年09月15日 ： 18:36
 * @version: ver1.0
 * @email 709785494@qq.com
 */
public class Producer {

    public static void main(String[] args) throws Exception {

        // 1.根据生产者组名创建一个消息的生产者对象
        DefaultMQProducer producer = new DefaultMQProducer("producer_hello_group");
        // 2.连接mq
        producer.setNamesrvAddr("127.0.0.1:9876");
        // 3.启动
        producer.start();
        // 4.创建消息，并指定Topic，Tag和消息体  1.topic：主题的意思，消息的一级分类  2.tag：消息的二级分类  3.我们的数据、消息，必须是byte字节数组
        Message msg = new Message("hello_topic" /* Topic */, "hello_tags" /* Tag */, "这是同步消息！".getBytes(StandardCharsets.UTF_8));
        // 5.发送消息到一个Broker，同步消息是会有响应的，我们可以知道消息是否发送成功
        SendResult sendResult = producer.send(msg);// 我们调用了方法立马就要知道消息是否发送成功，这个叫同步
        // 6.通过sendResult返回消息是否成功送达
        System.out.printf("%s%n", sendResult);
        // 7.如果不再发送消息，关闭Producer实例
        producer.shutdown();
    }
}
